package com.yuexunit.finance.member.action.v1;

import java.util.List;

import com.yuexunit.finance.context.FinVersion1;
import com.yuexunit.finance.member.action.v1.model.LogisticsClerkDetail;
import com.yuexunit.finance.member.action.v1.model.LogisticsCompanyDetail;
import com.yuexunit.finance.member.action.v1.model.LogisticsCompanyInfo;
import com.yuexunit.page.PageCriteria;
import com.yuexunit.page.PageList;
import com.yuexunit.web.annotation.Action;
import com.yuexunit.web.annotation.Parameter;
import com.yuexunit.web.annotation.Permission;

/**
 * @author wenwenlong
 */
public interface LogisticsCompanyActionApi {

	@Permission
	@Action(version = FinVersion1.class, description = "新增物流公司")
	@Parameter(name = "logisticsCompanyId", description = "物流公司ID")
	public String createLogisticsCompany(LogisticsCompanyInfo logisticsCompanyInfo);

	@Permission
	@Action(version = FinVersion1.class, description = "修改物流公司信息")
	public void updateLogisticsCompany(LogisticsCompanyDetail logisticsCompanyDetail);

	@Permission
	@Action(version = FinVersion1.class, description = "删除物流公司")
	public void disableLogisticsCompany(
			@Parameter(name = "companyId", description = "物流公司ID") Long companyId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询物流公司详情")
	public LogisticsCompanyDetail inquireLogisticsCompanyDetail(
			@Parameter(name = "companyId", description = "物流公司ID") Long companyId
	);

	@Permission
	@Action(version = FinVersion1.class, description = "查询物流公司列表")
	public PageList<LogisticsCompanyDetail> inquireLogisticsCompanyList(
			@Parameter(name = "createDateTimeBegin", description = "从添加时间", nullable = true) String createDateTimeBegin, 
			@Parameter(name = "createDateTimeEnd", description = "到添加时间", nullable = true) String createDateTimeEnd, 
			@Parameter(name = "companyName", description = "物流公司名称", nullable = true) String companyName,
			@Parameter(name = "companyAccount", description = "公司账户", nullable = true) String companyAccount,
			@Parameter(name = "reportState", description = "是否直报 0-否;1-是 理货员直接提交理货报告", nullable = true) Integer reportState, 
			@Parameter(name = "effective", description = "有效状态 0:无效/1:有效", nullable = true) Integer effective, 
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询物流公司列表")
	public List<LogisticsCompanyDetail> inquireLogisticsCompanyAll();
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询物流公司列表(下拉自动完成)")
	public PageList<LogisticsCompanyDetail> inquireLogisticsCompanyListByCompanyName(
			@Parameter(name = "companyName", description = "物流公司名称", nullable = true) String companyName, 
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
	

	@Action(version = FinVersion1.class, description = "查询物流公司的有效性")
	public void inquireLogisticsCompanyValid(@Parameter(name = "accountName", description = "物流公司账号", nullable = true) String accountName);
	//===============================================================================================================//
	@Permission
	@Action(version = FinVersion1.class, description = "新增物流人员")
	@Parameter(name = "clerkId", description = "物流人员ID")
	public String createLogisticsClerk(
			@Parameter(name = "clerkName", description = "物流人员名称") String clerkName,
			@Parameter(name = "clerkMobile", description = "物流人员电话") String clerkMobile
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "修改物流人员信息")
	public void updateLogisticsClerk(
			@Parameter(name = "clerkId", description = "物流人员ID") Long clerkId,
			@Parameter(name = "clerkName", description = "物流人员名称") String clerkName,
			@Parameter(name = "clerkMobile", description = "物流人员电话") String clerkMobile
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "删除物流人员")
	public void disableLogisticsClerk(
			@Parameter(name = "clerkId", description = "物流人员ID") Long clerkId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询物流人员详情")
	public LogisticsClerkDetail inquireLogisticsClerkDetail(
			@Parameter(name = "clerkId", description = "物流人员ID") Long clerkId
	);
	
	@Permission
	@Action(version = FinVersion1.class, description = "查询物流人员详情")
	public PageList<LogisticsClerkDetail> inquireLogisticsClerkPageList(
			@Parameter(name = "clerkName", description = "物流人员名称", nullable = true) String clerkName, 
			@Parameter(name = "clerkMobile", description = "物流人员电话", nullable = true) String clerkMobile, 
			@Parameter(name = "page", description = "分页参数") PageCriteria page
	);
}
